/**
 * Created by wenwu on 02/05/2017.
 */
define(function (require) {
	var Vue = require('vue'),
		Config = require('config'),
		_ = require('ajax'),
		utilities = require('utilities');

	var app = new Vue({
		el: '#index_register',
		data: {
            smsSeconds: 60,
            smsAvailable: true,
			formObj: {
				nickName: '',
				phone: '',
				code: '',
                yzcode:'',
				cuuid: '',
				xuuid: '',
				passWord: '',
				idCard: '',
				sex: 402
			},
			rePassword: '',
			cityList: [],
			regionList: []
		},
		methods: {
			init: function () {
				app.loadArea('cityList', 2);
			},
			loadArea: function (arrName, code) {
				_(Config.SERVICE.COMMON.ADDRLIST, {
					parentId: code
				}, function (data) {
					// console.log(data.obj);
					app[arrName] = data.obj[code];
					app[arrName].unshift({id: '', name: '请选择'});
				});
			},
            sendCaptcha: function () {
                if(app.smsAvailable){
                    app.smsSeconds = 60;
                    if (app.formObj.phone.trim() === '') {
                        alert('请输入手机号！');
                    } else {
                        _(Config.SERVICE.USERCENTER.SEND_CAPTCHA, {phone: app.formObj.phone}, function (data) {
                            console.log(data);
                            app.smsAvailable = false;
                            var timer = setInterval(function () {
                                if (app.smsSeconds == 1) {
                                    app.smsAvailable = true;
                                    clearInterval(timer);
                                }
                                app.smsSeconds--;
                            }, 1000);
                        });
                    }
                }
            },
			submit: function () {
				if (app.formObj.nickName.trim() === '') {
					alert('请输入昵称！');
				} else if (app.formObj.phone.trim() === '') {
					alert('请输入手机号！');
				} else if (app.formObj.passWord.trim() === '') {
					alert('请输入密码！');
				} else if (app.rePassword.trim() === '') {
					alert('请再次输入密码！');
				} else if (app.formObj.idCard.trim() === '') {
					alert('请输入身份证号！');
				} else if (!this.IdentityCodeValid(app.formObj.idCard)) {
                    //alert('请输入身份证号！');
                }else if (app.formObj.yzcode === '') {
                    alert('请输入验证码！');
                }else if (app.formObj.xuuid === '') {
					alert('请选择地区！');
				} else if (app.formObj.passWord.trim() !== app.rePassword.trim()) {
					alert('两次密码输入不一致！');
				} else if(!$('#sfty').is(':checked')){
                    alert('请同意并接受《亲青恋用户注册协议》！');
                }else {
					var req = {};
					for (var key in app.formObj) {
						if (key !== 'cuuid' && key !== 'xuuid')
							req['xgmember.' + key] = app.formObj[key];
					}
					req.cuuid = app.formObj.cuuid;
					req.xuuid = app.formObj.xuuid;
                    req.code=app.formObj.yzcode;
					req.openId = utilities.getParameterByName('openId');
					_(Config.SERVICE.USERCENTER.REGISTER, req, function (data) {
						if (data.type === 'SUCCESS') {
							alert('注册成功！');
							sessionStorage.setItem('id', data.obj.id);
							location.href = 'index.html';
						} else {
							alert(data.errmsg);
						}
					});
				}
			},
			goPhoneBind: function(){
				location.href = 'phone_bind.html?openId=' + utilities.getParameterByName('openId');
			},
            IdentityCodeValid:function (code) {
                num = code.toUpperCase();
                //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。
                if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))
                {
                    alert('输入的身份证号长度不对，或者号码不符合规定！');
                    return false;
                }
                //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
                //下面分别分析出生日期和校验位
                var len, re;
                len = num.length;
                if (len == 15)
                {
                    re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
                    var arrSplit = num.match(re);

                    //检查生日日期是否正确
                    var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
                    var bGoodDay;
                    bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
                    if (!bGoodDay)
                    {
                        alert('输入的身份证号里出生日期不对！');
                        return false;
                    }
                    else
                    {
                        //将15位身份证转成18位
                        //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
                        var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
                        var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
                        var nTemp = 0, i;
                        num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
                        for(i = 0; i < 17; i ++)
                        {
                            nTemp += num.substr(i, 1) * arrInt[i];
                        }
                        num += arrCh[nTemp % 11];

                    }
                }
                if (len == 18)
                {
                    re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
                    var arrSplit = num.match(re);

                    //检查生日日期是否正确
                    var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
                    var bGoodDay;
                    bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
                    if (!bGoodDay)
                    {
                        alert('输入的身份证号里出生日期不对！');
                        return false;
                    }
                    else
                    {
                        //检验18位身份证的校验码是否正确。
                        //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
                        var valnum;
                        var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
                        var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
                        var nTemp = 0, i;
                        for(i = 0; i < 17; i ++)
                        {
                            nTemp += num.substr(i, 1) * arrInt[i];
                        }
                        valnum = arrCh[nTemp % 11];
                        if (valnum != num.substr(17, 1))
                        {
                            alert('18位身份证的校验码不正确！应该为：' + valnum);
                            return false;
                        }

                    }
                }
				return true;
			}
		}
	});
	app.init();
});